package com.skyjing.tooluitls

import android.content.Context
import android.content.pm.PackageManager
import android.util.DisplayMetrics
import android.util.TypedValue

import java.text.SimpleDateFormat
import java.util.Date
import java.util.Locale

object KUitls {

    /**
     * 获取当前小时分钟24小时进制
     * @return
     */
    // 获取当前时间
    val time24Hours: String
        get() {
            val formatter = SimpleDateFormat("HH:mm", Locale.CHINA)
            val curDate = Date(System.currentTimeMillis())
            return formatter.format(curDate)
        }

    /**
     * 将px值转换为dip或dp值，保证尺寸大小不变
     * @param context
     * @param pxValue
     * @return
     */
    fun px2dp(context: Context, pxValue: Float): Int {
        val scale = context.resources.displayMetrics.density
        return (pxValue / scale + 0.5f).toInt()
    }

    /**
     * dp转px
     * @param context
     * @param dpVal
     * @return
     */
    fun dp2px(context: Context, dpVal: Float): Int {
        return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,
                dpVal, context.resources.displayMetrics).toInt()
    }

    /**
     * 将px值转换为sp值，保证文字大小不变
     * @param context
     * @param pxValue
     * @return
     */
    fun px2sp(context: Context, pxValue: Float): Int {
        val fontScale = context.resources.displayMetrics.scaledDensity
        return (pxValue / fontScale + 0.5f).toInt()
    }

    /**
     * 将sp值转换为px值，保证文字大小不变
     * @param context
     * @param spValue
     * @return
     */
    fun sp2px(context: Context, spValue: Float): Int {
        //        float fontScale = context.getResources().getDisplayMetrics().scaledDensity;
        //        return (int) (spValue * fontScale + 0.5f);
        return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP,
                spValue, context.resources.displayMetrics).toInt()
    }

    /**
     * 获取版本号
     * @param context
     * @return
     */
    fun getVersionName(context: Context): String? {
        try {
            return context.packageManager.getPackageInfo(
                    context.packageName, 0).versionName
        } catch (e: PackageManager.NameNotFoundException) {
        }

        return null
    }

    /**
     * 获取版本号
     * @param context
     * @return
     */
    fun getVersionCode(context: Context): Int {
        try {
            return context.packageManager.getPackageInfo(
                    context.packageName, 0).versionCode
        } catch (e: PackageManager.NameNotFoundException) {

        }

        return 0
    }

    /**
     * 获取屏幕宽度，px
     * @param context
     * @return
     */
    fun getScreenWidth(context: Context): Float {
        val dm = context.resources.displayMetrics
        return dm.widthPixels.toFloat()
    }

    /**
     * 获取屏幕高度，px
     * @param context
     * @return
     */
    fun getScreenHeight(context: Context): Float {
        val dm = context.resources.displayMetrics
        return dm.heightPixels.toFloat()
    }

    /**
     * 获取屏幕像素密度
     * @param context
     * @return
     */
    fun getDensity(context: Context): Float {
        val dm = context.resources.displayMetrics
        return dm.density
    }

    /**
     * 获取scaledDensity
     * @param context
     * @return
     */
    fun getScaledDensity(context: Context): Float {
        val dm = context.resources.displayMetrics
        return dm.scaledDensity
    }
}
